Array Functions
PHP Manual

array_multisort

(PHP 4, PHP 5)

array_multisortOrdena múltiples matrices, o matrices multi-dimensionales

Descripción

bool array_multisort ( array $matriz [, mixed $arg [, mixed $... ]] )

array_multisort() puede usarse para ordenar varias matrices al tiempo, o una matriz multi-dimensional por una o más dimensiones.

Las llaves asociativas (string) son conservadas, aunque las llaves numéricas son re-indexadas.

Lista de parámetros

matriz

Un valor tipo array a ordenar.

arg

Opcionalmente otro valor array, u opciones de ordenamiente para el argumento tipo matriz previo: SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING.

...

Argumentos adicionales.

Valores retornados

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.

Ejemplos

Example #1 Ordenamiento de varias matrices

<?php
$matriz1 
= array(101001000);
$matriz2 = array(1324);
array_multisort($matriz1$matriz2);

var_dump($matriz1);
var_dump($matriz2);
?>

En este ejemplo, después del ordenamiento, la primera matriz contendrá los valores 0, 10, 100, 100. La segunda matriz contendrá 4, 1, 2, 3. Las entradas en la segunda matriz que correspondían a las entradas idénticas de la primera matriz (100 y 100) fueron ordenadas también.

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Example #2 Ordenamiento de una matriz multi-dimensional

<?php
$matriz 
= array(
       array(
"10"11100100"a"),
       array(   
1,  2"2",   3,   1)
      );
array_multisort($matriz[0], SORT_ASCSORT_STRING,
                
$matriz[1], SORT_NUMERICSORT_DESC);
var_dump($matriz);
?>

En este ejemplo, después del ordenamiento, la primera matriz se transformará a 10, 100, 100, 11, "a" (fue ordenada como cadenas en orden ascendente), y la segunda tendrá 1, 3, "2", 2, 1 (ordenada como números, en orden descendiente).

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Example #3 Ordenamiento de resultados de una base de datos

Para este ejemplo, cada elemento en la matriz datos representa una fila en una tabla. Este tipo de conjunto de datos es típico de los registros en una base de datos.

Datos de ejemplo:

volumen| edicion
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

Las datos como una matriz, llamada datos. Ésta se obtendría usualmente, por ejemplo, mediante un ciclo con mysql_fetch_assoc().

<?php
$datos
[] = array('volumen' => 67'edicion' => 2);
$datos[] = array('volumen' => 86'edicion' => 1);
$datos[] = array('volumen' => 85'edicion' => 6);
$datos[] = array('volumen' => 98'edicion' => 2);
$datos[] = array('volumen' => 86'edicion' => 6);
$datos[] = array('volumen' => 67'edicion' => 7);
?>

En este ejemplo, ordenaremos por volumen descendientemente, y por edicion ascendentemente.

Tenemos una matriz de filas, pero array_multisort() requiere una matriz de columnas, así que usamos el código a continuación para obtener las columnas, y luego realizar el ordenamiento.

<?php
// Obtener una lista de columnas
foreach ($datos as $llave => $fila) {
    
$volumen[$llave]  = $fila['volumen'];
    
$edicion[$llave] = $fila['edicion'];
}
// Ordenar los datos con volumen descendiente, edicion ascendiente
// Agregar $datos como el último parámetro, para ordenar por la llave común
array_multisort($volumenSORT_DESC$edicionSORT_ASC$datos);
?>

El conjunto de datos está ordenado ahora, y lucirá de este modo:

volumen| edicion
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Example #4 Ordenamiento insensible a mayúsculas/minúsculas

Tanto SORT_STRING como SORT_REGULAR son sensibles a mayúsculas/minúsculas, las cadenas que comienzan con una letra mayúscula vendrán antes que las cadenas con una letra minúscula.

Para realizar una búsqueda insensible a minúsculas y mayúsculas, asegúrese de que el orden sea determinado por una copia en minúsculas de la matriz original.

<?php
$matriz 
= array('Alpha''atomico''Beta''banco');
$matriz_minusculas array_map('strtolower'$matriz);

array_multisort($matriz_minusculasSORT_ASCSORT_STRING$matriz);

print_r($matriz);
?>

El resultado del ejemplo seria:

Array
(
    [0] => Alpha
    [1] => atomico
    [2] => banco
    [3] => Beta
)


Array Functions
PHP Manual